package com.richpay.basejava.base14;

/**
 * 数组是一个容器类，所谓容器类就是这个对象中可以装载其他对象。
 * <p>
 * 数组的特点：
 * A、数组中只能存放相同数据类型的值。
 * B、数组一旦实例化后，大小不能改变。
 * C、数组中的元素可以是基本数据类型和引用数据类型。
 */
public class ForPlus {
    public static void main(String[] args) {
        String str1 = "张三";
        String str2 = "张三";
        String[] strArray1 = {str1};
        String[] strArray2 = {str2};
        System.out.println("strArray1=" + strArray1);
        /**
         * 以上打印内容：
         *   strArray1=[Ljava.lang.String;@7852e922
         *   [:代表是数组；
         *   Ljava.lang.String:代表数组中的元素是String数据类型的。
         *   ;@7852e922：代表引用地址
         */

        int[] intArray = {4};
        System.out.println("intArray=" + intArray);
        /**
         *  以上打印内容：
         *  intArray=[I@4e25154f
         *  [:代表数组
         *  I:代表数组中的元素是int类型的
         */

        /**
         *  问题：数组可以初始化几次?
         *  如：int [] intArray={4};
         *  那我要改变数组里元素的值可以按如下的操作吗？
         *  intArray={5};
         *
         *  答：不可以。只能动态赋值。
         */


        /**
         * 增强for循环的语法格式：
         * for(数据类型 变量名:数组名或者集合名){
         *     //操作的是变量名
         * }
         *
         *
         * 工作原理：对数组或者集合中的每一个元素赋值给变量名，
         * 进行操作，当数组或者集合中的元素全部赋值给变量后循环自动退出。
         *
         * 对数组或者集合中的元素进行遍历：对数组或者集合中的元素访问且只访问一次的过程。
         *
         * 增强for循环的优缺点：
         * 优点：
         *     A、操作简单
         *     B、只能访问数组或者集合中的元素
         * 缺点:
         *     A、无法访问数组的索引值
         *     B、无法修改元素数组中元素的值
         *
         */
        int[] array = {1, 3, 5, 7, 9};
        for (int i : array) {
            System.out.println("i=" + i);

        }
        System.out.println("增强for循环结束运行！");


        for (int i = 0; i < array.length; i++) {
            System.out.println("array[" + i + "]=" + array[i]);
        }
    }
}
